// #include <iostream>
// #include <string>
// using namespace std;
//
// //运算符重载
// //赋予运算符能够直接操作自定义类型
// //必备 至少存在一个自定义类型
// //实质 运算符重载的实质就是函数调用 函数名: operator和运算符组成 参数 操作数的类型  操作数的类型 友元重载 参数等于操作数  类成员函数重载 参数=操作-1  返回值类型 运算符运算完的类型
// //bool operator>(MM mm1,MM mm2){}
// class MM {
// public:
//     MM():MM("默认",0){};
//     MM(string name,int age) {
//         this->name = name;
//         this->age = age;
//     }
//     // friend bool operator>(MM mm1,MM mm2) {
//     //     return mm1.age > mm2.age;
//     // }
//     bool operator>(const MM &other) const {
//         return this->age > other.age;
//     }
// protected:
//     string name;
//     int age;
// };
//
//
// int main() {
//     MM mm("xiaofang",1);
//     // MM result  = mm +1;
//     MM mm2("xiaosss",2);
//
//
//     // if (mm2 > mm) {
//     //     cout << "2大" << endl;
//     // }else {
//     //     cout << "1大" << endl;
//     // }
//
//     //显示调用
//     if (mm2.operator>(mm)) {
//         cout << "2大" << endl;
//     }
//     return 0;
// }
/**
 * . = () -> []只能重载位类的成员函数
 * 运算符重载必须包含一个自定义类型 结构体或类
 * . .* ?: ::不能被重载
 * 重载运算符不能无中生有
 * 习惯行为 单目用成员函数重载   双面用友元重载
 *
 *
 */